package com.zh.seckill.validator;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

// 定义了一个名为IsMobile的注解，用于校验手机号码格式
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) // 定义了该注解可以应用的Java元素类型
@Retention(RUNTIME) // 表示该注解在运行时仍然有效
@Documented // 表示该注解将被包含在JavaDoc文档中
@Constraint(validatedBy = {IsMobileValidator.class}) // 指定IsMobileValidator作为该注解的验证器
public @interface IsMobile {
    // 定义了message属性，用于指定校验失败时的默认错误信息
    String message() default "手机号码格式错误";

    // 定义了required属性，用于指定是否必须有值
    boolean required() default true;

    // 定义了groups属性，用于指定该约束在不同验证组中的应用
    Class<?>[] groups() default { };//默认参数

    // 定义了payload属性，用于指定该约束的负载
    Class<? extends Payload>[] payload() default { };//默认参数
}
